Skip to content

fix: ignore server-side production trigger bits in transport class trigger parsing#600

Open
MrAlaskan wants to merge 2 commits into
EIPStackGroup:masterfrom
MrAlaskan:fix/cipconnectionobject-server-trigger-bits
Open

fix: ignore server-side production trigger bits in transport class trigger parsing#600
MrAlaskan wants to merge 2 commits into
EIPStackGroup:masterfrom
MrAlaskan:fix/cipconnectionobject-server-trigger-bits

Conversation

@MrAlaskan

Copy link
Copy Markdown

Summary

This PR makes ConnectionObjectGetTransportClassTriggerProductionTrigger() ignore production trigger bits when the Transport Class Trigger direction bit indicates Server behavior.

Problem

The ConnectionObjectTransportClassTriggerDirection comment in cipconnectionobject.h already states that for Server behavior, the production trigger bits are to be ignored.

However, ConnectionObjectGetTransportClassTriggerProductionTrigger() previously decoded the trigger bits without first checking the direction bit. If the encoded trigger value was not one of the explicitly supported client-side trigger types, the function returned Invalid.

HandleNonNullNonMatchingForwardOpenRequest() then treated that Invalid result as an unsupported transport-class-and-trigger combination and rejected the Forward Open request before connection path parsing and normal connection setup could proceed.

As a result, Server direction connections could be rejected only because they carried production trigger bits that the implementation's own comment says should be ignored.

Changes

  • Check the Transport Class Trigger direction before decoding the production trigger bits.
  • Return a stable non-error trigger value for Server direction connections so that ignored trigger bits no longer cause a spurious Forward Open rejection.
  • Add a focused unit test that verifies Server direction connections no longer map ignored trigger bits to Invalid.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant